home *** CD-ROM | disk | FTP | other *** search
/ EuroCD 3 / EuroCD 3.iso / Programming / Amos / AMOSList-0198 / AMOSLIST / 000171_amos-request@svcs1.digex.net_Sat Jan 31 19:14:52 1998.msg < prev    next >
Text File  |  1998-06-24  |  13KB  |  367 lines

  1. >From amos-request@svcs1.digex.net  Sat Jan 31 19:14:52 1998
  2. Received: from svcs1.digex.net (svcs1.digex.net [204.91.197.224])
  3.     by pony-1.mail.digex.net (8.8.8/8.8.8) with ESMTP id TAA07534
  4.     for <mcox@access.digex.net>; Sat, 31 Jan 1998 19:14:52 -0500 (EST)
  5. Received: (from daemon@localhost)
  6.     by svcs1.digex.net (8.8.5/8.8.5) id RAA19609
  7.     for amos-out; Sat, 31 Jan 1998 17:07:35 -0500 (EST)
  8. Received: from pony-1.mail.digex.net (pony-1.mail.digex.net [204.91.241.5])
  9.     by svcs1.digex.net (8.8.5/8.8.5) with ESMTP id RAA19606
  10.     for <amos-list@svcs1.digex.net>; Sat, 31 Jan 1998 17:07:34 -0500 (EST)
  11. Received: from mail2.desupernet.net (mail.desupernet.net [204.249.184.82])
  12.     by pony-1.mail.digex.net (8.8.8/8.8.8) with SMTP id RAA22043
  13.     for <amos-list@access.digex.net>; Sat, 31 Jan 1998 17:07:32 -0500 (EST)
  14. Received: (qmail 7515 invoked from network); 31 Jan 1998 22:07:03 -0000
  15. Received: from unknown (HELO redrose.net) (mushy-pd@208.7.253.140)
  16.   by 204.249.184.82 with SMTP; 31 Jan 1998 22:07:03 -0000
  17. From: Mush <mushypd@redrose.net>
  18. Reply-To: mushypd@redrose.net
  19. To: Martin =?iso-8859-1?Q?M=F8ller?= <flop@get2net.dk>
  20. CC: amos-list@access.digex.net
  21. Date: Sat, 31 Jan 1998 17:09:30 +0500
  22. Message-ID: <yam7335.1541.4181016@mail.redrose.net>
  23. In-Reply-To: <yam7335.792.120605496@bohr.get2net.dk>
  24. X-Mailer: YAM 1.3.5 [020] - Amiga Mailer by Marcel Beck
  25. Organization: Mushroom PD - AMOS Public Domain Library
  26. Subject: Re: Arexx calls from amos
  27. MIME-Version: 1.0
  28. Content-Type: text/plain; charset=iso-8859-1
  29. Content-Transfer-Encoding: 8bit
  30. X-MIME-Autoconverted: from quoted-printable to 8bit by svcs1.digex.net id RAA19607
  31. Status: O
  32. X-Status: 
  33.  
  34. It was on the night of 31-Jan-98, when no creatures were stirring, and all was
  35. silent. Suddenly, Martin jumped out from behind a rock and wouldnt stop
  36. shouting about "Arexx calls from amos" until I was forced to knock them out:
  37. �-> Hi guys.
  38.  
  39. �-> Can anyone of you tell me if there exists a arexx extension for amos.
  40.  
  41. Not that I know of, one isnt needed  =)
  42.  
  43. �-> I would like to be able to send a command directly to yam.
  44.  
  45. �-> Something like this would be nice:
  46.  
  47. �-> Arexx address="YAM"
  48. �-> Arexx send "getmail"
  49.  
  50. �-> Does this extension exists?, and where to get it?
  51.  
  52. �-> I know i'm able to use the exec command like exec "RX Script.arexx".
  53. �-> But that's another problem i'm having, it's not stable enough.
  54. �-> Some times the script works perfectly, other times it just executes
  55. �-> the first three or four lines. and then hangs. Have anyone else had this
  56. �-> problem, and how do i avoid it?.
  57.  
  58. OK, take a look at this program that allows AMOS to interact with AmIRC. At
  59. the bottom is also the small AREXX script, mish.amirx, which goes in AmIRC and
  60. all channel text is sent to it:
  61.  
  62. Rem ******************************************************************** 
  63. Rem **    NIALL  Non-Intelligent AMOS Language Learner Version 1.0  ï¿½ ** 
  64. Rem **   ==========================================================   ** 
  65. Rem **                Written By Matthew Peck in 1990                 **      
  66.     
  67. Rem ******************************************************************** 
  68. Set Buffer 400
  69. MNW=3000
  70. Randomize Timer
  71. Hide On : Close Editor 
  72. Close Workbench 
  73. Dim WORD$(MNW,1),W$(255),CO(1)
  74. Global COM,T$,WORD$(),NUM,W$(),W,SPEAK,HARD,CO(),MNW
  75. WORD$(0,0)=" " : WORD$(MNW,0)="."
  76. SETUP
  77. Do 
  78.    USER_INPUT
  79.    If COM=1 Then Goto SKIPIT
  80.    NIALL_REPLIES
  81.    SKIPIT:
  82. Loop 
  83. Rem -------------------------------------------------------------------- 
  84. Procedure SEE_INSTRUCTIONS
  85.    Screen Hide 1 : Screen Hide 0
  86.    For F=1 To 2 : Unpack 2 To 2 : Gr Writing 0
  87.       For G=1 To 25 : Read C,A$ : Ink 0 : Text 17,33+G*8,A$
  88.          Ink C : Text 16,32+G*8,A$
  89.    Next G : Wait Key : Fade 2 : Wait 30 : Next F
  90.    Screen Close 2
  91.    Screen Show 1 : Screen Show 0
  92.    Data 6,"                               COMMAND WORDS"
  93.    Data 1," "
  94.    Data 1," When you are given the prompt USER: you will normally type in  a 
  95. sentence,"
  96.    Data 1,"but you can also type in a command word.    All command words  are 
  97. prefixed"
  98.    Data 1,"by a '#'.  This version (1.0) can support the following commands."
  99.    Data 1," "
  100.    Data 7,"#LIST        Displays Nialls current dictionary on the screen."
  101.    Data 1," "
  102.    Data 7,"#LLIST       Outputs the dictionary to a printer."
  103.    Data 1," "
  104.    Data 7,"#LPRINT      Toggles direct output to printer."
  105.    Data 1," "
  106.    Data 7,"#SPEAK       Toggles speech."
  107.    Data 1," "
  108.    Data 7,"#SAVE        Saves the current dictionary to disc under any name."
  109.    Data 1," "
  110.    Data 7,"#LOAD        Loads a previously saved dictionary from disc."
  111.    Data 1," "
  112.    Data 7,"#CORRECT     Corrects a mispelt word in the dictionary."
  113.    Data 1," "
  114.    Data 7,"#FRESH       Clears the current dictionary."
  115.    Data 1," "
  116.    Data 7,"#QUIT        Leaves the program."
  117.    Data 1," "
  118.    Data 5,"                                PRESS A KEY"
  119.    Data 5,"                                  CREDITS"
  120.    Data 1," "
  121.    Data 4,"         Written by Matthew Peck in AMOS Version 1.1 in August
  122. 1990"
  123.    Data 1,"  The original idea for NIALL was adapted from a program called
  124. DANI, which"
  125.    Data 1,"was written for the MSX machines and published in a magazine,MSX
  126. Computing."
  127.    Data 1,"NIALL is a complete re-write but I would like to give credit to the
  128.  author"
  129.    Data 1,"of DANI for the inspiration.  However, I no longer have the
  130. magazine and do"
  131.    Data 1,"not know the author's name. If you wrote DANI then contact me so
  132. that I can"
  133.    Data 1,"place your name in the credit list."
  134.    Data 1," "
  135.    Data 1,"  Many thanks go to the following people for their help,
  136. suggestions etc."
  137.    Data 6,"Adam Wright................................For waiting for me to
  138. code this."
  139.    Data 6,"Pat Fox and Julian Brown.....For playtesting my BBC basic version
  140. to death."
  141.    Data 6,"Kevin Tye...................................For being a generally
  142. nice guy."
  143.    Data 6,"Gary Keogh...............For being a great room-mate and friend at
  144. college."
  145.    Data 6,"Francios Lionet........................For AMOS, what else, and
  146. finally to "
  147.    Data 6,"Sarah Gould...........For being such a caring and understanding
  148. girlfriend."
  149.    Data 1," "
  150.    Data 1,"My address is:"
  151.    Data 4,"      23 Welbeck Avenue, Bedgrove, Aylesbury, Bucks, ENGLAND, HP21
  152. 9BH."
  153.    Data 1," Contact me with/for ideas, programs, NIALL dictionaries and NIALL
  154. updates."
  155.    Data 1," "
  156.    Data 5,"                                PRESS A KEY"
  157.    Data 1," "
  158.    Data 5,"                        AMOS (c) 1990 Mandarin/Jawx"
  159. End Proc
  160. Procedure USER_INPUT
  161.    COM=0 : For F=1 To 3 : Print : Next F : For F=1 To 3 : Cup : Next F
  162.    Pen CO(1) : Print "USER:"; : Pen 1 : Line Input " ";T$
  163.    Cup : Pen CO(1) : Print "USER: "; : Pen 1 : Print T$
  164.    If HARD=1 Then Lprint " USER:";T$
  165.    If T$="" Then Pop Proc
  166.    T$=Lower$(T$)
  167.    Rem --- Is it a command string --- 
  168.    If Left$(T$,1)="#" Then COMMANDS : COM=1 : Pop Proc
  169.    Rem --- Cuts out the rubbish --- 
  170.    R$="" : For F=1 To Len(T$)
  171.       If Mid$(T$,F,1)="," Then Mid$(T$,F,1)="."
  172.       If Instr("!�$%^&*()_+|}{@?></#\="+Chr$(34),Mid$(T$,F,1))=0 Then
  173. R$=R$+Mid$(T$,F,1)
  174.    Next F : T$=R$
  175.    Rem --- Seperates into words --- 
  176.    If Right$(T$,1)="." Then Right$(T$,1)=" "
  177.    Q$=T$
  178.    FULLSTOP:
  179.    If Instr(Q$,".")<>0 Then FS=1 : T$=Left$(Q$,Instr(Q$,".")-1) :
  180. Q$=Right$(Q$,Len(Q$)-Instr(Q$,"."))
  181.    W=1 : W$(W)="" : For F=1 To Len(T$)
  182.       If Mid$(T$,F,1)=" " Then If Mid$(T$,F+1,1)<>" " Then W=W+1 : W$(W)="" :
  183. Goto SKIP
  184.       W$(W)=W$(W)+Mid$(T$,F,1)
  185.    SKIP: Next F
  186.    If NUM<>MNW-1
  187.       ANALYSE_SENTENCE
  188.    End If 
  189.    If FS=1 Then FS=0 : T$=Q$ : Goto FULLSTOP
  190. End Proc
  191. Procedure ANALYSE_SENTENCE
  192.    Rem --- Loop for the number of words +1 ---
  193.    OLD=0
  194.    For H=1 To W+1
  195.       If H=W+1 Then F=MNW : Goto FOUNDIT
  196.       For F=1 To NUM : If W$(H)=WORD$(F,0) Then Goto FOUNDIT
  197.       Next F
  198.       Rem --- The word is a new one ---
  199.       NUM=NUM+1 : WORD$(NUM,0)=W$(H) : F=NUM
  200.       FOUNDIT:
  201.       If WORD$(OLD,1)="" Then WORD$(OLD,1)="1|"+Str$(F)+"(1)" : Goto ALLDONE
  202.       C$=WORD$(OLD,1) : C$=Str$(Val(C$)+1)+Right$(C$,Len(C$)-Instr(C$,"|")+1)
  203.       For G=Instr(C$,"|")+1 To Len(C$)
  204.          If Val(Right$(C$,Len(C$)-G))=F Then Goto HERE
  205.          G=Instr(C$,")",G)
  206.       Next G
  207.       C$=C$+Str$(F)+"(1)" : WORD$(OLD,1)=C$ : Goto ALLDONE
  208.       HERE:
  209.       G=Instr(C$,"(",G) : I=Instr(C$,")",G)-1
  210.       C$=Left$(C$,G)+Str$(Val(Right$(C$,Len(C$)-G))+1)+Right$(C$,Len(C$)-I)
  211.       WORD$(OLD,1)=C$
  212.       ALLDONE:
  213.       OLD=F
  214.    Next H
  215. End Proc
  216. Procedure NIALL_REPLIES
  217.    If NUM=0 Then Pen CO(1) : Print "I cannot speak yet!" : Pen 1 : Pop Proc
  218.    REP$="" : C=0
  219.    RLOOP:
  220.    C$=WORD$(C,1) : R=Rnd(Val(C$)) : If R=0 Then Goto RLOOP
  221.    For G=Instr(C$,"(") To Len(C$)
  222.       R=R-Val(Right$(C$,Len(C$)-G)) : If R<=0 Then Goto THISWORD
  223.       G=Instr(C$,"(",G+1)-1
  224.    Next G
  225.    End 
  226.    THISWORD:
  227.    For F=G To 1 Step -1
  228.       F$=Mid$(C$,F,1) : If(F$=")") or(F$="|") Then Goto WORD
  229.    Next F
  230.    WORD:
  231.    D=Val(Right$(C$,Len(C$)-F))
  232.    REP$=REP$+WORD$(C,0)+" "
  233.    C=D : If C<>MNW Then Goto RLOOP
  234.    Do 
  235.       If Left$(REP$,1)<>" " Then Exit 
  236.       REP$=Right$(REP$,Len(REP$)-1)
  237.    Loop 
  238.    If REP$="" Then Pop Proc
  239.    Left$(REP$,1)=Chr$(Asc(Left$(REP$,1))-32)
  240.    Right$(REP$,1)="."
  241.    Pen CO(1) : Print "NIALL:"; : Pen 1 : Print REP$
  242.    If SPEAK=1 Then Say REP$,0
  243.    If HARD=1 Then Lprint "NIALL:";REP$
  244. End Proc
  245. Procedure SETUP
  246.    If Fast Free<>0
  247.       Unpack 1 To 0 : Screen Display 0,128,40,320,28
  248.    End If 
  249.    If Fast Free<>0
  250.       Screen Open 1,640,230,4,Hires : CO(0)=2 : CO(1)=3
  251.    Else 
  252.       Screen Open 1,320,230,2,Lowres : CO(0)=1 : CO(1)=1
  253.    End If 
  254.    Screen Display 1,128,70,, : Flash Off : Screen 1 : Palette $0,$FFF,$F00,$48
  255.    Pen CO(0) : Paper 0 : Cls 
  256.    Centre "Welcome to NIALL" : Print 
  257.    Centre "Non Intelligent AMOS Language Learner" : Print 
  258.    Centre "Written in AMOS Basic Version 1.1" : Print 
  259.    Centre "by Matthew Peck in 1990" : Print : Print 
  260.    Centre "This program is fully Public Domain" : Print : Print 
  261.    If Fast Free<>0
  262.       Centre "Would you like further instructions (Y/N)" : A$=Input$(1) :
  263. Print 
  264.       A$=Upper$(A$)
  265.       If A$="Y"
  266.          SEE_INSTRUCTIONS
  267.       End If 
  268.       Centre ".......... Get Typing ..........."
  269.    End If 
  270.    Print 
  271. End Proc
  272. Procedure COMMANDS
  273.    If T$="#list"
  274.       For F=0 To NUM Step 20
  275.          For G=0 To 19 : If F+G<=NUM
  276.                Print F+G,WORD$(F+G,0),WORD$(F+G,1)
  277.             End If 
  278.          Next G : Print : Pen CO(0) : Centre "PRESS A KEY" : Pen 1 : Print :
  279. Wait Key 
  280.       Next F : Pop Proc
  281.    End If 
  282.    If T$="#llist"
  283.       For F=0 To NUM : Lprint F,WORD$(F,0),WORD$(F,1) : Next F
  284.    End If 
  285.    If T$="#save"
  286.       Show On : A$=Fsel$("*.NIALL") : Hide On 
  287.       If Upper$(Right$(A$,6))<>".NIALL"
  288.          A$=A$+".NIALL"
  289.       End If 
  290.       Open Out 1,A$ : Print #1,NUM
  291.       For F=0 To NUM : Print #1,WORD$(F,0) : Print #1,WORD$(F,1) : Next F
  292.       Close 1
  293.    End If 
  294.    If T$="#load"
  295.       Show On : A$=Fsel$("*.NIALL") : Hide On : Open In 1,A$
  296.       Input #1,NUM
  297.       Y=Y Curs
  298.       For F=0 To NUM : Locate 0,Y : Print "Countdown:";NUM-F;"  "; : Input
  299. #1,WORD$(F,0) : Input #1,WORD$(F,1) : Next F
  300.       Close 1
  301.       Print 
  302.    End If 
  303.    If T$="#correct"
  304.       Pen CO(0) : Print "Enter incorrect word:"; : Pen 1 : Input " ";O$
  305.       For F=1 To NUM
  306.          If Lower$(O$)=WORD$(F,0)
  307.             Pen CO(0) : Print "Enter correct spelling:"; : Pen 1 : Input "
  308. ";N$
  309.             WORD$(F,0)=Lower$(N$)
  310.          Else 
  311.          Next F : Print "Cannot find word ";O$
  312.       End If 
  313.    End If 
  314.    If T$="#fresh"
  315.       Pen CO(0) : Centre "Are you sure (Y/N)" : A$=Input$(1) : Print 
  316.       If Upper$(A$)="Y"
  317.          For F=0 To NUM : WORD$(F,0)="" : WORD$(F,1)="" : Next F : NUM=0
  318.       End If 
  319.    End If 
  320.    If T$="#quit"
  321.       Pen CO(0) : Centre "Do you really want to quit (Y/N)" : A$=Input$(1) :
  322. Print 
  323.       If Upper$(A$)="Y"
  324.          Screen Close 0 : Screen Close 1 : End 
  325.       End If 
  326.    End If 
  327.    If T$="#speak"
  328.       If SPEAK=0
  329.          SPEAK=1
  330.       Else 
  331.          SPEAK=0
  332.       End If 
  333.    End If 
  334.    If T$="#lprint"
  335.       If HARD=0
  336.          HARD=1
  337.       Else 
  338.          HARD=0
  339.       End If 
  340.    End If 
  341. End Proc
  342.  
  343. And now for the AREXX script (mish.amirx):
  344.  
  345. /**************************************************************************/
  346. /*    Script to parse stuff from AmIRC to AMOS                            */
  347. /**************************************************************************/
  348.  
  349. parse arg args
  350. options results
  351.  
  352. address AMOS args
  353.  
  354. EXIT 10
  355.  
  356. -- 
  357. Andrew "Mushroom" Kellett
  358. --
  359.  Email: Andy Kellett <mushypd@redrose.net>  Team *AMOS* + IAPA Team *AMIGA*
  360.   alt.religion.amos - AMOS now on usenet! AMOS Mailinglist also mirrored
  361.  
  362.      World's Largest AMOS Homepages - http://www.mushy-pd.demon.co.uk
  363.                Official F1 Software Distributor for the USA
  364.  
  365.          Massive FTP site with AMOS/C64 and Mods/Samples + more at
  366.                             mushy-pd.dyn.ml.org
  367.